package br.ucb.lab3.entidades;

import java.util.ArrayList;
import java.util.Collections;

import br.ucb.lab3.Comparadores.ComparadorByPesoCrescente;
import br.ucb.lab3.Comparadores.ComparadorByPesoDecrescente;
import br.ucb.lab3.Comparadores.ComparadorByTreinamentoCrescente;
import br.ucb.lab3.Comparadores.ComparadorByTreinamentosDescre;
import br.ucb.lab3.enumeradores.Bicicleta;
import br.ucb.lab3.excepition.AtletaRepetidoException;

public class Treinador {
	
	private ArrayList<Atleta> atletas;
	
	public Treinador(){
		setAtletas(new ArrayList<Atleta>());
	}
	
	public ArrayList<Atleta> getAtletasOrdenadosPeloTreinamento(int tipo){
		ArrayList<Atleta> a = (ArrayList<Atleta>) getAtletas().clone();
		if(tipo == 1){
			Collections.sort(a, new ComparadorByTreinamentosDescre());
		}
		return a;
	}
	
	public ArrayList<Atleta> getAtletasTipoDeBike(Bicicleta bike){
		ArrayList<Atleta> a = new ArrayList<Atleta>();
		for (Atleta atleta : getAtletas()) {
			if(atleta.getBicicleta() == bike){
				a.add(atleta);
			}
		}
		Collections.sort(a,new ComparadorByTreinamentoCrescente());
		return a;
	}


	public ArrayList<Atleta> getAtletasOrdenadosPeloPeso(int tipo){
		ArrayList<Atleta> a = (ArrayList<Atleta>) getAtletas().clone();
		if(tipo == 1){
			Collections.sort(a, new ComparadorByPesoCrescente());
		}else{
			Collections.sort(a, new ComparadorByPesoDecrescente());
		}
		return a;
	}
	
	
	public void add(Atleta a) throws AtletaRepetidoException{
		if(!getAtletas().contains(a)){
			getAtletas().add(a);
		}else{
			throw new AtletaRepetidoException();
		}
	}

	public ArrayList<Atleta> getAtletas() {
		return atletas;
	}

	public void setAtletas(ArrayList<Atleta> atletas) {
		this.atletas = atletas;
	}

}
